package com.me.myFramework.myAop.aop130.advice.method;

import com.me.myFramework.myAop.aop130.advice.Advice;

import java.lang.reflect.Method;

/**
 * 自己实现 AOP-130：  <p></p>
 *
 * 方法执行前的增强逻辑，相当于《模板模式》中的模板方法类
 *
 * @author ME
 * @date 2021/9/26
 */
public interface MethodBeforeAdvice extends Advice {

    /**
     * TODO 把 before增强 抽取到 MethodBeforeAdvice 接口中，后续通过组合模式组合回 MethodBeforeAdviceInterceptor，
     *  彻底分离 模板方法、增强逻辑
     *
     * @param method        被调用的方法方法
     * @param args          方法参数
     * @param target        目标对象
     * @throws Throwable    Throwable
     */
    void before(Method method, Object[] args, Object target) throws Throwable;

}
